Project 2: Quantum Teleportation Simulation
Description
Quantum teleportation is a process by which the quantum state of a qubit can be transmitted from one location to another, with the help of classical communication and a pre-shared entangled pair of qubits. It's important to note that this process does not transmit matter or energy, but rather information.
Objectives
- Understand the concept of quantum entanglement and Bell states.
- Create a quantum circuit that implements the quantum teleportation protocol.
- Verify that the state of the initial qubit is successfully transferred to the target qubit.
Implementation Details
- Framework: Use a quantum computing framework like Qiskit or Cirq.
- The Protocol:
- Start with three qubits: one to be teleported (the "message"), and two that are entangled (the "Bell pair").
- Create a Bell pair between two of the qubits (let's call them Qubit 1 and Qubit 2).
- The message qubit (Qubit 0) and Qubit 1 are brought together.
- A Bell measurement is performed on the message qubit and Qubit 1.
- The results of this measurement (two classical bits) are sent to the location of Qubit 2.
- Based on the values of the two classical bits, specific quantum gates (X and/or Z) are applied to Qubit 2.
- After these operations, Qubit 2 will be in the exact state that the message qubit was in initially.
- Code Example (Qiskit):
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, Aer
# Create registers
qr = QuantumRegister(3, name="q")
crz = ClassicalRegister(1, name="crz")
cry = ClassicalRegister(1, name="cry")
circuit = QuantumCircuit(qr, crz, cry)
# Create a Bell pair (Qubit 1 and Qubit 2)
circuit.h(1)
circuit.cx(1, 2)
# Prepare the message qubit (Qubit 0) in a state to be teleported
# For example, a superposition state
circuit.h(0)
# Bell measurement on Qubit 0 and Qubit 1
circuit.cx(0, 1)
circuit.h(0)
circuit.measure(0, 0)
circuit.measure(1, 1)
# Apply gates to Qubit 2 based on the classical bits
circuit.x(2).c_if(cry, 1)
circuit.z(2).c_if(crz, 1)
# To verify, we can check the state of Qubit 2
# (This would require a statevector simulator)